// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef NET_CERT_MERKLE_CONSISTENCY_PROOF_H_
#define NET_CERT_MERKLE_CONSISTENCY_PROOF_H_

#include <stdint.h>

#include <string>
#include <vector>

#include "net/base/net_export.h"

namespace net {

namespace ct {

    // Consistency proof between two STHs as defined in section 2.1.2. of RFC6962.
    struct NET_EXPORT MerkleConsistencyProof {
        MerkleConsistencyProof();
        MerkleConsistencyProof(const std::string& log_id,
            const std::vector<std::string>& proof_nodes,
            uint64_t old_size,
            uint64_t new_size);
        ~MerkleConsistencyProof();

        // The origin of this proof.
        std::string log_id;

        // Consistency proof nodes.
        std::vector<std::string> nodes;

        // Size of the older tree.
        uint64_t first_tree_size = 0;

        // Size of the newer tree.
        uint64_t second_tree_size = 0;
    };

} // namespace ct

} // namespace net

#endif // NET_CERT_MERKLE_CONSISTENCY_PROOF_H_
